# 创建空字典的两种方式：使用 {} 和 dict()
info20 = {}
info21 = dict()
# 输出两个变量的类型，均为 <class 'dict'>
print(type(info20), type(info21))
# 打印空字典 info20
print(info20)

# 为 info21 赋值一个包含姓名、年龄、身高的字典
info21 = {"name": "张三", "age": 22, "height": 1.88}
# 打印该字典
print(info21)
# 打印其类型
print(type(info21))

# 向字典中添加新的键值对：性别为“男”
info21["sex"] = "男"
# 打印添加后的字典
print(info21)

# 访问字典中键为 "name" 的值
print(info21["name"])

# 使用 pop() 方法删除键为 "sex" 的键值对，并返回其值
info21.pop("sex")
# 打印删除后的字典
print(info21)

# 获取键 "name" 对应的值并赋给 info22
info22 = info21["name"]
# 使用 get() 方法获取键 "age" 对应的值（更安全，键不存在时返回 None）
info23 = info21.get("age")
# 打印获取的值
print(info22)
print(info23)

# 定义一个嵌套字典，包含爱好（书籍和运动）
info24 = {
    "name": "tom",
    "age": 18,
    "gender": "男",
    "hobby": {
        "read": "小说",
        "sport": ["篮球", "足球"]
    }
}

# 打印 hobby 对应的整个字典
print(info24["hobby"])
# 打印 hobby 中 read 对应的值：“小说”
print(info24["hobby"]["read"])
# 打印 hobby 中 sport 对应的列表
print(info24["hobby"]["sport"])
# 打印 sport 列表中的第二个元素：“足球”
print(info24["hobby"]["sport"][1])
# 使用 get() 方法链式访问，获取 sport 列表的第一个元素：“篮球”
print(info24.get("hobby").get("sport")[0])

# 定义两个字典
info25 = {"name": "张三", "age": 18}
info26 = {"height": 1.88}
# 将 info26 的所有键值对更新到 info25 中
info25.update(info26)
# 打印更新后的 info25
print(info25)
# info26 本身未改变
print(info26)

# 遍历字典的所有键
for i in info25.keys():
    print(f"字典的键是：{i}")

# 遍历字典的所有值
for i in info25.values():
    print(f"字典的值是：{i}")

# 同时遍历字典的键和值
for k, v in info25.items():
    print(f"{k} = {v}")